iT邦幫忙

2024 iThome 鐵人賽

DAY 3
2
DevOps

Grafana Zero to Hero系列 第 3

Grafana Zero to Hero - Dashboard 與 Monitoring 的最佳實踐

  • 分享至 

  • xImage
  •  

了解怎麼使用 Grafana 後,恭喜你已經成功跨出了第一步。不過,在使用了許多由他人精心設計的 Dashboard 後,你是否也希望針對自己的場景設計專屬的 Dashboard?在開始動手設計前,讓我們先快速學習如何設計出一個好的 Dashboard。

Infographic Dashboard 與 Exploratory Dashboard

在 Grafana 中,通常可以看到兩種類型的 Dashboard:

  1. Infographic Dashboard:資訊圖表式的 Dashboard,資訊簡潔,使用者無須額外操作即可快速掌握概況,例如商業資訊呈現、整體系統運行概況等,適合在大螢幕上播放以供瀏覽。
  2. Exploratory Dashboard:探索式的 Dashboard,資訊較多,使用者可以根據需求自行挖掘並發現新的洞見,例如主機或容器的運行監控,適合在個人裝置上進行操作和查閱。

Infographic Dashboard
Infographic Dashboard:JAXA 月球登陸任務 Dashboard,圖片來源:How Japan's space agency used Grafana to monitor its first moon landing in real time

Exploratory Dashboard
Exploratory Dashboard:Node Exporter Dashboard

儘管這兩種類型的 Dashboard 都是用來呈現資訊,但它們達成目標的方式幾乎完全不同。因此,了解你需要的是哪一種類型的 Dashboard,是設計過程中非常重要的一步。

Dashboard Best Practice

Best Practice(最佳實踐)是開始學習任何領域時最有用的查詢關鍵字之一,代表領域內的專家透過實踐證明最有效的做法,尤其是在那些已經發展一段時間的領域。從 Best Practice 開始學習,能讓你少走很多彎路,Grafana 就在官方文件中提供了 Dashboard Best Practices 供參考。由於 Dashboard 其實也是 Data Visualization(資料視覺化)的其中一種,因此一些 Data Visualization 相關的 Best Practice 或 Guide 也非常有參考價值,例如:

  1. Data Visualization 101: How to Design Charts and Graphs
  2. TableauVisual Analysis Best Practices
  3. Harvard Library Jess Cohen-Tanugi 的 Best Practices for Data Visualization
  4. Royal Statistical Society 的 Best Practices for Data Visualisation

遵循這些 Best Practice 可以讓你的 Dashboard 不會顯得雜亂無章,確保你至少設計出一個 80 分的 Dashboard。接下來,我們將彙集各家的 Best Practice,拆分為心法與技法兩類進行介紹。

心法-設計原則

  1. 了解目標受眾:首先,最重要的是了解與確立你的受眾,包括他們是誰、在哪裡使用、怎麼使用,這些都應盡可能明確定義。
    • 相較於一般的資料視覺化,Dashboard 通常有更明確的受眾,如管理層、開發人員或維運人員。不同受眾所關心的數據和使用方式差異很大,管理層更在意商業指標,而技術人員則可能需要更細節的技術數據進行探索和分析。
  2. 敘事性與聚焦核心:每個 Dashboard 應該回答一個具體的問題或講述一個明確的故事,並專注於此。
    • Dashboard 的設計應圍繞這個核心問題或故事進行,避免過多資訊造成混亂。如果有其他延伸問題,應考慮建立新的 Dashboard,並通過連結來串聯,避免讓使用者迷失在過多資訊中。
  3. 清晰度:資訊應該一目了然,易於理解,避免讓使用者在過多數據中迷失。
  4. 一致性:設計應該保持一致性,以提高使用者的熟悉度和理解度。
  5. 相關性:只展示對使用者有意義的資訊,去除不必要的數據,確保所有資訊都能為核心問題提供價值。

除了這些共通的原則外,Infographic Dashboard 與 Exploratory Dashboard 也各有其特有的設計原則:

  • Infographic Dashboard:專注於傳遞單一或少數關鍵指標,避免多餘的資訊干擾使用者的判斷
  • Exploratory Dashboard:提供豐富的互動功能,讓使用者能夠深入探索趨勢、分類和相關性,從而發現數據中的潛在模式或異常。

技法-實踐方法

在技法部分,可以直接採用一般資料視覺化中的 UX 技巧:

  1. 視覺層次:使用大小、色彩和位置來突出關鍵信息。例如人在閱讀時會以 F 字形或 Z 字形進行移動,越重要的資訊要確保能夠越先被讀到。
  2. 色彩對比:適當使用色彩對比提高資料可讀性,並使用一致的色彩語言來表示狀態或分類。
  3. 簡化設計:移除不必要的視覺元素,讓使用者專注於重要的數據。

Scanning Patterns
Z 字形與 F 字形閱讀模式,資訊較密集時會採 F 字形,較稀疏時會採 Z 字形,圖片來源:Psychology of reading a CV - F & Z Patterns

與心法類似,Infographic Dashboard 與 Exploratory Dashboard 在實踐方法上也有不同之處:

  • Infographic Dashboard:強調資訊簡化與重點突出,利用色彩和大小來突出關鍵數據,確保資訊簡單且直觀。
  • Exploratory Dashboard:提供高互動性的介面,允許使用者篩選、過濾並深入挖掘數據。

除了 UX 技巧外,選擇合適的圖表在 Dashboard 設計中也至關重要。有許多決策工具能幫助選擇合適的圖表,其中最常見的是 Andrew V. Abela 提出的 Chart Chooser,根據想表達的內容(如關聯、對比、分布或組合)來決定應使用的圖表;而 From Data to Viz 則根據資料的類型與數量推薦合適的圖表,並介紹各種圖表的用途與視覺化技巧。

Chart Chooser
Chart Chooser,圖片來源:mintea.blog

Monitoring Best Practice

心法與技法可以告訴我們如何設計出好的 Dashboard,但 Dashboard 本身的設計仍需依據具體的使用場景進行調整。Grafana 最常見的應用場景是機器或服務的監控,這也是本系列文章的主要目標之一。透過學習前人的 Best Practice,可以更有架構地進行監控。以下將介紹三種常見的監控策略:The USE Method、The Four Golden Signals 與 The RED Method。

The USE Method

The USE Method 是由 Brendan Gregg 提出,主要用於排查系統效能問題,能夠快速判斷資源瓶頸或錯誤情況。USE 代表以下三項指標:

  1. Utilization 使用率:資源在多少比率的時間中是忙碌的,例如 CPU 使用率、網路使用率、硬碟使用率等。
  2. Saturation 飽和度:資源有多少工作在等待被完成,例如 CPU Run Queue、網路 Buffer、硬碟 I/O Queue 等。
  3. Errors 錯誤情況:錯誤事件的數量,例如 HTTP 500、硬碟 I/O Error 等。

The USE Method 的設計理念是,在系統出現錯誤時,可以依序檢查 CPU、記憶體、網路和硬碟等資源的這三項指標,找出問題所在。反過來說,隨時監控這三項指標,就能提前發現潛在的問題。

The Four Golden Signals

The Four Golden Signals 出自 Google 的 Site Reliability Engineering 一書,提出了監控分散式系統時需要關注的四個關鍵指標:

  1. Latency 服務請求時間:處理請求所需時間,需區分成功與失敗的請求。例如,HTTP 500 可能很快得到回應,而一般請求需更長時間執行流程,合併計算會使請求時間指標不準確。
  2. Traffic 使用者用量:系統上使用者的需求量,需依照服務類型來定義,例如:
    1. API、Web:每秒請求數
    2. 串流服務:網路 I/O、連線數
    3. DB:每秒查詢數、交易數
  3. Errors 錯誤比率:失敗請求的比率,需區分顯式(Explicitly)與隱式(Implicitly)的錯誤,例如:
    1. 顯式:如 HTTP 500、HTTP 404
    2. 隱式:HTTP Code 正常,但業務邏輯錯誤,如回傳內容包含 returnCode = -1
  4. Saturation 資源飽和度:資源有多滿,資源飽和後服務效能可能會大幅降低或不可用,例如:硬碟空間、網路頻寬。

Google 作為全球流量第一的網站從 2003 就開始建立 SRE Team 確保系統的穩定性,在監控與維運領域發展出了許多方法論,除了 The Four Golden Signals 外,還有許多其他概念與方法論值得參考,相關的著作 Google 也提供線上閱讀

The RED Method

The RED Method 是由現任 Grafana Labs CTO Tom WilkieWeaveworks 工作時提出,該方法融合了 The USE Method 與 The Four Golden Signals,定義了三種關鍵指標用以監控系統中的服務:

  1. (Request) Rate:每秒請求數
  2. (Request) Errors:每秒失敗請求數
  3. (Request) Duration:請求耗時分布

這三個指標能夠迅速對應到用戶端的使用體驗,透過持續監控,開發者與運維人員可以評估系統的改善效果,並在不同角色之間建立一個共通的語言,進行更有效的溝通。

實戰應用

在本篇的 Lab 中,我們使用 cAdvisor exporter 與 Node Exporter Full 這兩個廣泛使用的 Dashboard 作為應用案例,兩者分別用於監控 Container 與 Node 的資訊。他們也符合 Exploratory Dashboard 的特性,提供了豐富的互動功能,讓使用者能夠從數據中發現潛在的模式或異常。

實務監控中,Exploratory Dashboard 通常較為常用,因為多數情況下發生的問題是意料之外的,需要透過大量數據進行探索以找出根因。在探索過程中,會特別關注以下三項指標:

  1. Trends 趨勢:觀察指標變高或變低的時間點。
  2. Correlation 關聯:觀察不同指標之間的相關性。
  3. Outliers 離群值:觀察特定目標的行為是否與其他不同,例如某個 endpoint、service 或 server 的行為異常。

例如,在 cAdvisor 的 Dashboard 中,可以同時查看同一台機器上所有 Container 的資訊,或不同機器上相同 Container 的資訊,這些都可以幫助我們同時判斷 Trends、Correlation 與 Outliers。

cAdvisor Dashboard

在 Node Exporter Dashboard 中,實踐了許多前面提到的 Best Practice,例如:

  1. 視覺層次:在最上方的兩個 Row 中,只展示了 CPU、Memory、Disk、Network 等基本資訊,讓使用者能快速了解機器的狀況。若需要更詳細的資訊,可以展開下面的 Row 查看。
  2. 相關性:透過 Row 將不同類型的資訊分開,讓使用者能夠選擇性查看,確保只顯示他們關心的資訊。
  3. USE Method:針對 CPU、記憶體、網路和硬碟等資源進行監控,並在詳細資訊中展示使用率、飽和度(例如 Run Queue)和錯誤情況等指標,即便對機器底層不熟悉的使用者也能快速找到問題。

Node Exporter Dashboard Disk

除了 cAdvisor exporter 與 Node Exporter Full,Lab 中還有一個 Monitoring Best Practice Dashboard,示範如何應用 Four Golden Signals 與 RED Method 進行監控。該 Dashboard 會顯示一個簡單的 API 服務指標,並透過 k6 持續發送請求,讓使用者觀察指標的變化。

Monitoring Best Practice Dashboard

Lab

範例程式碼:https://github.com/blueswen/grafana-zero-to-hero/tree/main/02-best-practice

Lab Architecture

此 Lab 會建立

  1. Application:被監控的服務
  2. cAdvisor:收集 Container 資料
  3. Node Exporter:收集運行的機器(Node)的資料
  4. Prometheus:採集 Application、cAdvisor、Node Exporter 的 Metrics
  5. Grafana:查詢與顯示 Prometheus 採集到的 Metrics
  6. k6:使用 k6 對 Application 持續發送 Request

Quick Start

  1. 啟動所有服務

    docker-compose up -d
    
  2. 檢視服務

    1. Grafana: ++http://localhost:3000++,登入帳號密碼為 admin/admin
      1. 點擊左上 Menu > Dashboards > Provision Dashboards 再選擇 Monitoring Best Practice、cAdvisor exporter 或 Node Exporter Full,即可看到預先建立的 Dashboard
      2. Application:http://localhost:8000/docs,可以查看 API 文件,並透過 Swagger UI 測試 API
  3. 模擬發送 Request,預設啟動時會持續發送 10 分鐘,若要再次發送可重新啟動 k6 container

    docker-compose start k6
    
  4. 關閉所有服務

    docker-compose down
    

小結

在這篇文章中,我們了解了 Infographic 和 Exploratory 兩種 Dashboard 的差異,並討論了如何從基本的視覺化設計原則(心法)、具體的 UX 技巧(技法),到選擇合適的圖表來設計 Dashboard。我們還探討了如何在監控場景中靈活運用 USE Method、Four Golden Signals 和 RED Method 等策略,來幫助設計出符合需求的 Dashboard。有了這些知識,相信你已經準備好開始設計自己的 Dashboard 了!


上一篇
Grafana Zero to Hero - Put Your Hands On!
下一篇
Grafana Zero to Hero - Visualization:Show me the number!
系列文
Grafana Zero to Hero30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言